אני מגדיר בהם Getters ו-Setters, ונתקעתי בנושא של כפיית טיפוסי הערכים. כשמישהו משנה ערכים, יהיו במערך נפרד, ואז שני דברים יקרו, בניגוד לתיעוד:
1. Setter מקבל למעשה טיפוס אחר מהמוגדר.
2. Getter יוכל להחזיר גם ערכים חדשים (אם הדגל יהיה מוגדר), והוא יוכל להחזיר כל ערך. הפתרון (רק לזה) הלא מקובל עליי יהיה לכתוב אוסף Getters מיוחד לערכים שהשתנו עם תיעוד mixed.
אני חושב שכדאי שהוולידציה תהיה בריפוזיטורי, אבל זה יגרום לסתירה בין התיעוד לזמן הריצה. מה עושים?
4 תשובות
אם אתה לא רוצה שמישהו יכניס משהו לא נכון לתוך המודל, הגטרים, והסטרים צריכים להיות בתוך המודל. אופציה נוספת היא לעבור ל hack שמסוגל לכפות גם טיפוסים פרימיטיביים, אבל זה שינוי די משמעוטי
אופציה נוספת היא לעשות מודלים שלא ניתנים לשינוי, כלומר מאפיינים פרטיים וסטרים ריקים ובמקום זה להשתמש בפקטורי שיהיה אחראי על יצירה או שכפול+שינוי של מודל קיים. כלומר אם אתה רוצה לשנות משהו במופע א׳ אתה משתמש במחלקה אחרת שמשכפלת את א׳, עושה וליגציה לערכים החדשים, משנה אותם אצל ההעתק ומחזירה.
לא אידאלי במיוחד.
בגלל ש PHP לא מסוגלת לעשות את הולידציה בעצמה, אתה תצטרך לעשות את זה בעצמך איפשהו. או במודל או מחוץ לא..
(או להחליף שפה)
אז בעצם הפתרון הטוב יותר הוא לשלב את זה במודל עצמו? ואם רוצים עוד גמישות (לשימוש חוזר), לעשות דלגציה לאובייקט UserTypeEnforcerInterface, או אולי טוב יותר - למערך הגדרות טיפוסים, שיטופל על ידי אובייקט TypeEnforcerIntarface כללי.